Généralités

Import pour les tableaux

In [1]:
import numpy as np

Comment obtenir de l'aide sur une fonction?

In [8]:
np.array?

Utilisation de la touche tabulation

  • la touche de tabulation (TAB) effectue l'autcomplétion s'il n'y a qu'une possibilité, et ouvre un menu avec tous les choix possibles sinon.
  • la combinaison SHIFT-TAB permet d'obtenir de l'aide sur ce qui précède.

Création de tableaux

Comment convertir une liste en tableau

In [ ]:
liste=[1, 2, 3, 4]
tableau=np.array(liste)

Comment obtenir une grille découpant un intervalle en un nombre de points donnés?

In [9]:
np.linspace(0,3.0,20)
Out[9]:
array([ 0.        ,  0.15789474,  0.31578947,  0.47368421,  0.63157895,
        0.78947368,  0.94736842,  1.10526316,  1.26315789,  1.42105263,
        1.57894737,  1.73684211,  1.89473684,  2.05263158,  2.21052632,
        2.36842105,  2.52631579,  2.68421053,  2.84210526,  3.        ])

Comment obtenir un tableau de nombres remplis de zéros (ou de uns) de dimension donnée?

In [10]:
A=np.zeros((4,5))
print(A)
B=np.ones((6,4))
print(B)
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]
[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

Comment copier un tableau.

In [3]:
original=np.zeros(10)
copie=original
print(original, copie)
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.] [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
In [4]:
original[5]=1
print(copie, original)
[ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.] [ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.]
In [5]:
copie=np.array(original)
print(original, copie)
[ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.] [ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.]
In [6]:
original[1]=5
print(original, copie)
[ 0.  5.  0.  0.  0.  1.  0.  0.  0.  0.] [ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.]
In [7]:
copieBis=np.copy(original)
print(original, copieBis)
[ 0.  5.  0.  0.  0.  1.  0.  0.  0.  0.] [ 0.  5.  0.  0.  0.  1.  0.  0.  0.  0.]
In [8]:
original[9]=10
print(original, copieBis)
[  0.   5.   0.   0.   0.   1.   0.   0.   0.  10.] [ 0.  5.  0.  0.  0.  1.  0.  0.  0.  0.]

Comment obtenir un tableau de nombres aléatoire (loi uniforme sur $[0,1]$) de dimension donnée?

In [11]:
np.random.random((5,5))
Out[11]:
array([[ 0.88092636,  0.23584457,  0.03712579,  0.44747558,  0.48766077],
       [ 0.58868757,  0.3009237 ,  0.18541166,  0.57740427,  0.94873088],
       [ 0.87576176,  0.16486594,  0.20539898,  0.22237576,  0.53944724],
       [ 0.6472603 ,  0.50256327,  0.65968574,  0.45435249,  0.59168758],
       [ 0.2104432 ,  0.1304016 ,  0.74034244,  0.25569625,  0.52193849]])

Comment construire une matrice en rentrant ses coefficients à la main?

In [12]:
np.matrix('0 0 1; 0 1 0; 1 0 0')
Out[12]:
matrix([[0, 0, 1],
        [0, 1, 0],
        [1, 0, 0]])

On notera la différence entre matrix et array lors du produit.

In [13]:
I=np.matrix('1 1 1; 1 1 1; 1 1 1')
print(I)
print(I*I)
[[1 1 1]
 [1 1 1]
 [1 1 1]]
[[3 3 3]
 [3 3 3]
 [3 3 3]]
In [14]:
I=np.ones((3,3))
print(I)
print(I*I)
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]

Comment convertir un itérateur en tableau

In [3]:
def syracuse(u0):
    nb=u0
    yield nb
    while nb != 1:
        if nb % 2 == 0:
            nb = nb //2
        else:
            nb=3*nb+1
            
        yield nb
In [4]:
for u in syracuse(13):
    print(u)
13
40
20
10
5
16
8
4
2
1
In [5]:
np.array(syracuse(13))
Out[5]:
array(<generator object syracuse at 0x7f292c0a8a98>, dtype=object)
In [6]:
np.fromiter(syracuse(13), dtype=int)
Out[6]:
array([13, 40, 20, 10,  5, 16,  8,  4,  2,  1])

Comment empiler des tableaux

In [36]:
x=np.arange(10)
y=np.linspace(-5.0, -4.0, 10)
print(x)
print(y)
[0 1 2 3 4 5 6 7 8 9]
[-5.         -4.88888889 -4.77777778 -4.66666667 -4.55555556 -4.44444444
 -4.33333333 -4.22222222 -4.11111111 -4.        ]

Pour les juxtaposer en largeur

In [37]:
print(np.hstack((x,y)))
[ 0.          1.          2.          3.          4.          5.          6.
  7.          8.          9.         -5.         -4.88888889 -4.77777778
 -4.66666667 -4.55555556 -4.44444444 -4.33333333 -4.22222222 -4.11111111
 -4.        ]

Pour les juxtaposer en hauteur

In [38]:
print(np.vstack((x,y)))
[[ 0.          1.          2.          3.          4.          5.          6.
   7.          8.          9.        ]
 [-5.         -4.88888889 -4.77777778 -4.66666667 -4.55555556 -4.44444444
  -4.33333333 -4.22222222 -4.11111111 -4.        ]]

Pour créer des "couples" mélangeant les deux tableaux

In [39]:
print(np.dstack((x,y)))
[[[ 0.         -5.        ]
  [ 1.         -4.88888889]
  [ 2.         -4.77777778]
  [ 3.         -4.66666667]
  [ 4.         -4.55555556]
  [ 5.         -4.44444444]
  [ 6.         -4.33333333]
  [ 7.         -4.22222222]
  [ 8.         -4.11111111]
  [ 9.         -4.        ]]]